import javax.swing.text.TabableView;

/**
 * @author zhangshuai
 * @version V1.0
 * @Project Java2_26
 * @Package PACKAGE_NAME
 * @Description:
 * @Date 2025/5/14 11:05
 */

public class Demo2 {
    /**
     * 多态的概念：多态是一种能力，是一种父类引用指向子类对象，在运行期，会根据对象的实际类型调用，实际类型中重写父类的方法的能力。
     *
     * 多态的三个必要条件：
     * 	1：继承
     * 	2：子类重写父类方法
     * 	3：父类引用指向子类对象。
     *
     * 多态：对象的多种形态，通常是子类对象当做父类类型来使用。
     */

    //多态的体现  方法的重载和重写
    //1.一个遥控器可以控制多个设备，这就是多态的体现
    // 一个遥控器里面有多个按钮，每个按钮可以控制不同的设备，这就是多态方法的重载的体现
    // 一个遥控器里面有1个按钮，每按钮可以控制不同的设备，这就是多态方法的重写的体现

    public static void main(String[] args) {
        //多态的体现  方法的重载和重写
        //1.一个遥控器可以控制多个设备，这就是多态的体现
    /*    RemoteControl remoteControl =  new RemoteControl();
                remoteControl.turnOn();
        Television tv = new Television();
                tv.turnOn();
                //多态的体现*/
        //父类类型    父类对象    子类对象
//        RemoteControl tv2 = new Television();
//        tv2.turnOn();
//        RemoteControl computer = new Computer();
//        computer.turnOn();
//        AirConditioner airConditioner = new AirConditioner();
//        airConditioner.turnOn();

        //方法的重载
        RemoteControl tv3 = new Television();
        tv3.turnOn("CCTV1");





        RemoteControl computer = new Computer();


        if (tv3 instanceof Computer){
            Computer computer1 = (Computer) tv3;
            computer1.turnOn();
        }else {
            System.out.println("不是");
        }




    }


}
//遥控器
class RemoteControl {
    //多态方法的重载
    public void turnOn() {
        System.out.println("打开设备");

    }
    //方法的重载
    public void turnOn(String name){
        System.out.println("打开"+name);
    }

}

//电视
class Television extends RemoteControl {
    //多态方法的重写
    @Override
    public void turnOn() {
        System.out.println("打开电视");

    }
    @Override
    public void turnOn(String name){
        System.out.println("打开电视"+name);
    }



}
//电脑
class Computer extends RemoteControl {
    //多态方法的重写
    @Override
    public void turnOn() {
        System.out.println("打开电脑");

    }
}
//空调
class AirConditioner extends RemoteControl {
    @Override
    public void turnOn() {
        System.out.println("打开空调");

    }
}
